`timescale 1ns/1ps
module v_dresizer
#( 
    parameter FREQ_HZ = 32'd100000000, 
    parameter COLUMN_DOWN                       = 1'b1,
    parameter LINE_DOWN                         = 1'b1,   
    parameter VIDEO_WIDTH                       = 13'd1920,    
    parameter VIDEO_HEIGHT                      = 13'd1080,            
    parameter SAMPLES_PER_CLOCK                 = 1,
    parameter MAXIMUM_DATA_WIDTH                = 8,
    parameter S_AXIS_BYTES                      = 3,
    parameter S_AXIS_WIDTH                      = 24,
    parameter M_AXIS_BYTES                      = 3,
    parameter M_AXIS_WIDTH                      = 24 
)
(
    aclk,
    aresetn,
//input interface
    s_axis_tdata,
    s_axis_tlast,
    s_axis_tready,
    s_axis_tuser,
    s_axis_tvalid,
//output interface   
    m_axis_tdata,
    m_axis_tlast,
    m_axis_tready,
    m_axis_tuser,
    m_axis_tvalid
);

parameter NUM_VIDEO_COMPONENTS = 3;

parameter PIEXL_WIDTH = NUM_VIDEO_COMPONENTS * MAXIMUM_DATA_WIDTH;


input   aclk;
input   aresetn;

input  [S_AXIS_WIDTH -1:0]  s_axis_tdata;
input                       s_axis_tvalid;
output                      s_axis_tready;
input  [0:0]                s_axis_tuser;
input  [0:0]                s_axis_tlast;

output [M_AXIS_WIDTH-1:0]   m_axis_tdata;
output                      m_axis_tvalid;
input                       m_axis_tready;
output [0:0]                m_axis_tuser;
output [0:0]                m_axis_tlast;



generate
    if(SAMPLES_PER_CLOCK==1)
    v_dresizer_1ppc 
    #(   
        .COLUMN_DOWN (COLUMN_DOWN),
        .LINE_DOWN   (LINE_DOWN  ),
        .VIDEO_WIDTH  (VIDEO_WIDTH),
        .VIDEO_HEIGHT (VIDEO_HEIGHT),
        .S_AXIS_WIDTH(S_AXIS_WIDTH),
        .M_AXIS_WIDTH(M_AXIS_WIDTH),
	    .PIEXL_WIDTH(PIEXL_WIDTH)
	)
    inst0
    (
        .aclk           (aclk           ),
        .aresetn        (aresetn        ),
        .s_axis_tdata   (s_axis_tdata   ),
        .s_axis_tvalid  (s_axis_tvalid  ),
        .s_axis_tready  (s_axis_tready  ),
        .s_axis_tuser   (s_axis_tuser   ),
        .s_axis_tlast   (s_axis_tlast   ),
        .m_axis_tdata   (m_axis_tdata   ),
        .m_axis_tvalid  (m_axis_tvalid  ),
        .m_axis_tready  (m_axis_tready  ),
        .m_axis_tuser   (m_axis_tuser   ),
        .m_axis_tlast   (m_axis_tlast   )
    );

    // else if (SAMPLES_PER_CLOCK==2)
    // v_dresizer_2ppc 
    // #(   
    //     .COLUMN_DOWN (COLUMN_DOWN),
    //     .LINE_DOWN   (LINE_DOWN  ),
    //     .S_AXIS_WIDTH(S_AXIS_WIDTH),
    //     .M_AXIS_WIDTH(M_AXIS_WIDTH),
	//     .PIEXL_WIDTH(PIEXL_WIDTH)
	// )
    // inst0
    // (
    //     .aclk           (aclk           ),
    //     .aresetn        (aresetn        ),
    //     .s_axis_tdata   (s_axis_tdata   ),
    //     .s_axis_tvalid  (s_axis_tvalid  ),
    //     .s_axis_tready  (s_axis_tready  ),
    //     .s_axis_tuser   (s_axis_tuser   ),
    //     .s_axis_tlast   (s_axis_tlast   ),
    //     .m_axis_tdata   (m_axis_tdata   ),
    //     .m_axis_tvalid  (m_axis_tvalid  ),
    //     .m_axis_tready  (m_axis_tready  ),
    //     .m_axis_tuser   (m_axis_tuser   ),
    //     .m_axis_tlast   (m_axis_tlast   )
    // );

    // else if (SAMPLES_PER_CLOCK==4)
    // v_dresizer_4ppc 
    // #(   
    //     .COLUMN_DOWN (COLUMN_DOWN),
    //     .LINE_DOWN   (LINE_DOWN  ),
    //     .S_AXIS_WIDTH(S_AXIS_WIDTH),
    //     .M_AXIS_WIDTH(M_AXIS_WIDTH),
	//     .PIEXL_WIDTH(PIEXL_WIDTH)
	// )
    // inst0
    // (
    //     .aclk           (aclk           ),
    //     .aresetn        (aresetn        ),
    //     .s_axis_tdata   (s_axis_tdata   ),
    //     .s_axis_tvalid  (s_axis_tvalid  ),
    //     .s_axis_tready  (s_axis_tready  ),
    //     .s_axis_tuser   (s_axis_tuser   ),
    //     .s_axis_tlast   (s_axis_tlast   ),
    //     .m_axis_tdata   (m_axis_tdata   ),
    //     .m_axis_tvalid  (m_axis_tvalid  ),
    //     .m_axis_tready  (m_axis_tready  ),
    //     .m_axis_tuser   (m_axis_tuser   ),
    //     .m_axis_tlast   (m_axis_tlast   )
    // );

    // else if (SAMPLES_PER_CLOCK==8)
    // v_dresizer_8ppc 
    // #(   
    //     .COLUMN_DOWN (COLUMN_DOWN),
    //     .LINE_DOWN   (LINE_DOWN  ),
    //     .S_AXIS_WIDTH(S_AXIS_WIDTH),
    //     .M_AXIS_WIDTH(M_AXIS_WIDTH),
	//     .PIEXL_WIDTH(PIEXL_WIDTH)
	// )
    // inst0
    // (
    //     .aclk           (aclk           ),
    //     .aresetn        (aresetn        ),
    //     .s_axis_tdata   (s_axis_tdata   ),
    //     .s_axis_tvalid  (s_axis_tvalid  ),
    //     .s_axis_tready  (s_axis_tready  ),
    //     .s_axis_tuser   (s_axis_tuser   ),
    //     .s_axis_tlast   (s_axis_tlast   ),
    //     .m_axis_tdata   (m_axis_tdata   ),
    //     .m_axis_tvalid  (m_axis_tvalid  ),
    //     .m_axis_tready  (m_axis_tready  ),
    //     .m_axis_tuser   (m_axis_tuser   ),
    //     .m_axis_tlast   (m_axis_tlast   )
    // );

endgenerate

////////////////
endmodule
